#! /bin/sh

unset PROMPT_COMMAND

_gitbrc() {
    local _pwd="${PWD}"
    local _brc
    while :
    do
        if [ -e "${_pwd}/.git" ]; then
            if [ -r "${_pwd}/.git/HEAD" ]; then
                read _brc < ${_pwd}/.git/HEAD
                _brc=${_brc##*/}
                if [ ${_brc} ]; then
                    echo "${_brc}"
                    break
                else
                    echo "!!"
                    break
                fi
                echo "${_brc}"
                break
            fi
            echo "!"
            break
        fi
        _pwd=${_pwd%/*}
        if [ ! ${_pwd} ]; then
            break
        fi
    done
}

_precmd_eva()
{
    # python virtual env
    local _v=${VIRTUAL_ENV##*/}
    if [ ${_v} ]; then
        _v="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;142m\]${_v:0:3}\[\033[00m\]"
    fi
    # git branch
    local _b=$(_gitbrc)
    if [ ${_b} ]; then
        _b="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;172m\]${_b:0:3}\[\033[00m\]"
    fi
    # shell ps1
    PS1="\[\e]0;\u@\h: \w\a\]\[\033[1;38;5;71m\]\u@\h\[\033[00m\]\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;105m\]\w\[\033[00m\]${_v}${_b}\$ "
}

_precmd_docker()
{
    local _v=${VIRTUAL_ENV##*/}
    if [ ${_v} ]; then
        _v="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;252m\]${_v:0:3}\[\033[00m\]"
    fi

    local _b=$(_gitbrc)
    if [ ${_b} ]; then
        _b="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;252m\]${_b:0:3}\[\033[00m\]"
    fi

    PS1="\[\e]0;\u@\h: \w\a\]\[\033[1;38;5;33m\]\u@\h\[\033[00m\]\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;75m\]\w\[\033[00m\]${_v}${_b}\$ "
}

_precmd_gruvbox()
{
    local _v=${VIRTUAL_ENV##*/}
    if [ ${_v} ]; then
        _v="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;252m\]${_v:0:3}\[\033[00m\]"
    fi

    local _b=$(_gitbrc)
    if [ ${_b} ]; then
        _b="\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;252m\]${_b:0:3}\[\033[00m\]"
    fi

    PS1="\[\e]0;\u@\h: \w\a\]\[\033[1;38;5;33m\]\u@\h\[\033[00m\]\[\033[0;38;5;245m\]:\[\033[00m\]\[\033[1;38;5;75m\]\w\[\033[00m\]${_v}${_b}\$ "
}

_precmd_ayu()
{
    return
}

PROMPT_COMMAND=_precmd_eva
